/**
 * MD5.java    01/03/2012
 */

package l3.info.projetJava.utilitaires;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import l3.info.projetJava.client.RequetesClient;

import org.apache.log4j.Logger;

/**
 * Classe utilitaire pour les opérations sur le MD5
 * @author Loïc Martinez
 * @version 1.0
 */

public class Chiffrement {

    // Logger
    private static Logger logger = Logger.getLogger(Chiffrement.class);
    
    /**
     * Convertie une chaîne en son équivalent MD5
     * @param chaine, la chaine sur laquelle on veut appliquer
     *        l'algorithme MD5
     * @return res, le MD5 de la chaine
     */
    public static String toMD5(String chaine) {

        String res = "";
        String tmp;
        
        try {
            MessageDigest algorithm = MessageDigest.getInstance("MD5");
            algorithm.reset();
            algorithm.update(chaine.getBytes());

            byte[] md5 = algorithm.digest();

            for (int i = 0; i < md5.length; i++) {
                tmp = (Integer.toHexString(0xFF & md5[i]));
                if (tmp.length() == 1) {
                    res += "0" + tmp;
                } else {
                    res += tmp;
                }
            }
        } catch (NoSuchAlgorithmException ex) {
            logger.error("Chiffrement.toMD5() : NoSuchAlgorithmException");
        }
        return res;
    }

    /**
     * Algorithme de cryptage RSA
     * @param chaine, la chaine à crypter
     * @return chaine, la chaîne cryptée
     * TODO : Coder le cryptage
     */
    public static String crypt(String chaine) {
        return chaine;
    }

    /**
     * Algorithme de décryptage RSA
     * @param chaine, la chaîne à décrypter
     * @return chaine, la chaîne décryptée
     * TODO : Coder le décryptage
     */
    public static String decrypt(String chaine) {
        return chaine;
    }
}
